2019年5月14日
Jerry
7495
2019年7月9日
SQLite,是一款轻型的数据库,占用资源非常的低。这里记录下对sqlite3的增删改查相关操作,顺便复习一下SQL语句- -。
一、创建数据库
连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,最后将返回一个数据库对象。
# coding: UTF-8
import sqlite3
conn = sqlite3.connect('jerrycoding.db')
print ("打开数据库成功!")
二、创建数据表
创建一个学生表,里面有三个字段:姓名、年龄、性别,数据类型分别为varchar, int, char:
# coding: UTF-8
import sqlite3
conn = sqlite3.connect('jerrycoding.db')
print ("打开数据库成功!")
cur = conn.cursor()
cur.execute('''CREATE TABLE Student_sheet
(Name varchar(255),
Age int,
Sex char);''')
print ("创建学生表成功!")
conn.commit() #数据库存储在硬盘上需要commit 存储在内存中的数据库不需要
conn.close()
#当表已经存在时,反复创建会报错,这时候可以使用下面的SQL语句
# '''CREATE TABLE IF NOT EXISTS Student_sheet(Name varchar(255), Age int, Sex char);'''
三、插入数据和查询数据
# coding: UTF-8
import sqlite3
conn = sqlite3.connect('jerrycoding.db')
print ("打开数据库成功!")
cur = conn.cursor()
cur.execute("INSERT INTO Student_sheet (Name,Age,Sex) VALUES ('Jerry', 20, 'M')")
cur.execute("INSERT INTO Student_sheet (Name,Age,Sex) VALUES ('小哥', 18, 'M')")
cur.execute("INSERT INTO Student_sheet (Name,Age,Sex) VALUES ('小妹', 29, 'F')")
conn.commit()
print ("插入数据成功!")
print ("打印学生表如下:")
cursor = cur.execute('SELECT * FROM Student_sheet')
for i in cursor:
print(i[0], i[1], i[2])
conn.close()
运行显示如下:
四、修改数据
# coding: UTF-8
import sqlite3
conn = sqlite3.connect('jerrycoding.db')
print ("打开数据库成功!")
cur = conn.cursor()
cur.execute("UPDATE Student_sheet SET Age = 99 WHERE Name='Jerry'")
conn.commit()
print ("修改Jerry年龄数据成功!")
print ("打印学生表如下:")
cursor = cur.execute('SELECT * FROM Student_sheet')
for i in cursor:
print(i[0], i[1], i[2])
conn.close()
五、删除数据
# coding: UTF-8
import sqlite3
conn = sqlite3.connect('jerrycoding.db')
print ("打开数据库成功!")
cur = conn.cursor()
cur.execute("DELETE FROM Student_sheet WHERE Name='Jerry'")
conn.commit()
print ("删除Jerry数据成功!")
print ("打印学生表如下:")
cursor = cur.execute('SELECT * FROM Student_sheet')
for i in cursor:
print(i[0], i[1], i[2])
conn.close()
API 总结
sqlite3.connect(database [,timeout ,other optional arguments])
打开一个到 SQLite 数据库文件 database 的链接。您可以使用 ":memory:" 来在 RAM 中打开一个到 database 的数据库连接,而不是在磁盘上打开。如果数据库成功打开,则返回一个连接对象。
connection.cursor([cursorClass])
创建一个 cursor
cursor.execute(sql [, optional parameters])
执行一个 SQL 语句。该 SQL 语句可以被参数化(即使用占位符代替 SQL 文本)。sqlite3 模块支持两种类型的占位符:问好和命名占位符(命名样式)。
例如:cursor.execute("insert into people values (?, ?)", (who, age))
connection.execute(sql [, optional parameters])
该例程是上面执行的由光标(cursor)对象提供的方法的快捷方式,它通过调用光标(cursor)方法创建了一个中间的光标对象,然后通过给定的参数调用光标的 execute 方法。
cursor.executemany(sql, seq_of_parameters)
该例程对 seq_of_parameters 中的所有参数或映射执行一个 SQL 命令。
connection.executemany(sql[, parameters])
该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executemany 方法。
cursor.executescript(sql_script)
该例程一旦接收到脚本,会执行多个 SQL 语句。它首先执行 COMMIT 语句,然后执行作为参数传入的 SQL 脚本。所有的 SQL 语句应该用分号(;)分隔。
connection.executescript(sql_script)
该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executescript 方法。
connection.total_changes()
该例程返回自数据库连接打开以来被修改、插入或删除的数据库总行数。
connection.commit()
该方法提交当前的食物。如果您未调用该方法,那么自您上一次调用 commit() 以来所做的任何动作对其他数据库连接来说是不可见的。
connection.rollback()
该方法回滚自上一次调用 commit() 以来对数据库所做的更改。
connection.close()
该方法关闭数据库连接。请注意,这不会自动调用 commit()。如果您之前未调用 commit() 方法,就直接关闭数据库连接,您所做的所有更改将全部丢失!
cursor.fetchone()
该方法获取查询结果集中的下一行,返回一个单一的序列,当没有更多可用的数据时,则返回 None。
cursor.fetchmany([size=cursor.arraysize])
该方法获取查询结果集中的下一行组,返回一个列表。当没有更多的可用的行时,则返回一个空的列表。该方法尝试获取由 size 参数指定的尽可能多的行。
cursor.fetchall()
该例程获取查询结果集中所有(剩余)的行,返回一个列表。当没有可用的行时,则返回一个空的列表
Sqlite 的可视化软件:
有许多方便快捷的Sqlite的可视化软件,推荐 SqliteStudio 和 SqliteSpy,这些网上都可以轻松下载到,各位可以使用下。
原创文章,转载请注明出处:
https://jerrycoding.com/article/sqlite3
《学习笔记》
0
微信
支付宝